package pe.gob.osce.sirenas.svc;

import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import org.apache.log4j.Logger;

import pe.gob.osce.sirenas.dao.AreaProfesionDAOLocal;
import pe.gob.osce.sirenas.dao.convert.AreaProfesionConvert;
import pe.gob.osce.sirenas.dao.convert.AuditoriaConvert;
import pe.gob.osce.sirenas.model.AreaProfesionDTO;
import pe.gob.osce.sirenas.model.AuditoriaDTO;
import pe.gob.osce.sirenas.model.jpa.AreaProfesion;
import pe.gob.osce.sirenas.model.jpa.Auditoria;
import pe.gob.osce.sirenas.util.ConstanteEJB;
import pe.gob.osce.sirenas.util.ModeloException;


/**
 * Session Bean implementation class SolicitarInscripcionService
 */
@Stateless(mappedName = "MantenimientoTablasMaestrasService")
public class MantenimientoTablasMaestrasServiceImpl implements MantenimientoTablasMaestrasServiceLocal {
	final static Logger log = Logger.getLogger(MantenimientoTablasMaestrasServiceImpl.class);

	ResourceBundle propSirenas = ResourceBundle.getBundle(ConstanteEJB.PROPERTIES);

	@EJB
	private AreaProfesionDAOLocal areaProfesionDAOLocal;
	
	@Override
	public List<AreaProfesionDTO> guardarAreaProfesion(List<AreaProfesionDTO> listAreaProfesionDTO, AuditoriaDTO auditoriaDTO)
			throws Exception {
		List<AreaProfesion> listAreaProfesionJPA=null;
		List<AreaProfesionDTO> listAreaProfesion= null;
		List<AreaProfesion> listObjetoJPA=null;
		AreaProfesion areaProfesionJPA=null;
		Auditoria auditoriaJPA=null;
		try {
				listAreaProfesionJPA= new ArrayList<AreaProfesion>();
				listObjetoJPA= new ArrayList<AreaProfesion>();
				auditoriaJPA=AuditoriaConvert.createJPA(auditoriaDTO);
				listAreaProfesionJPA=AreaProfesionConvert.createListaAreaProfesionJPA(listAreaProfesionDTO,auditoriaJPA);
				for (AreaProfesion areaProfesion : listAreaProfesionJPA) {
					areaProfesionJPA= new AreaProfesion();
					areaProfesionJPA=areaProfesionDAOLocal.insertar(areaProfesion);					
					listObjetoJPA.add(areaProfesion);	
				}
				
				listAreaProfesion=AreaProfesionConvert.createListaAreaProfesionDTO(listObjetoJPA);
		} catch (ModeloException e) {
			throw new Exception(e.getMessage(),e);
		} catch (Exception e) {
			throw new ModeloException(propSirenas.getString(ConstanteEJB.EXC_MODELO_GENERAL_DB),e);
		}
		return listAreaProfesion;
	}

	@Override
	public AreaProfesionDTO consultarAreaProfesion(Long idAreaProfesion)
			throws Exception {
		AreaProfesion areaProfesion=null;
		AreaProfesionDTO areaProfesionDTO=null;
		try {
			
			areaProfesion=areaProfesionDAOLocal.consultarAreaProfesion(idAreaProfesion);
			areaProfesionDTO=AreaProfesionConvert.createAreaProfesionDTO(areaProfesion);
			
			} catch (ModeloException e) {
				throw new Exception(e.getMessage(),e);
			} catch (Exception e) {
				throw new ModeloException(propSirenas.getString(ConstanteEJB.EXC_MODELO_GENERAL_DB),e);
			}
		return areaProfesionDTO;
	}

	@Override
	public List<AreaProfesionDTO> obtenerListaAreaProfesion() throws Exception {
		List<AreaProfesion> listAreaProfesion=null;
		List<AreaProfesionDTO> listAreaProfesionDTO=null;
		try {
			
			listAreaProfesion=areaProfesionDAOLocal.obtenetListaAreaProfesion();
			listAreaProfesionDTO=AreaProfesionConvert.createListaAreaProfesionDTO(listAreaProfesion);
			
			} catch (ModeloException e) {
				throw new Exception(e.getMessage(),e);
			} catch (Exception e) {
				throw new ModeloException(propSirenas.getString(ConstanteEJB.EXC_MODELO_GENERAL_DB),e);
			}
		return listAreaProfesionDTO;
	}
	
	
}
